標題:解決"CV_BGR2RGB"未被宣告的問題
今天使用OpenCV4的時候,發現報錯了,"CV_BGR2RGB"居然不能用。
cvtColor(img, img, CV_BGR2RGB);//這行錯了
原因是因為OpenCV4改用"COLOR_BGR2RGB"而不是"CV_BGR2RGB"了。
所以
只要把它改成"COLOR_BGR2RGB"後,就可以執行了。
cvtColor(img, img, COLOR_BGR2RGB);//這行可以執行
標題:解決"CV_BGR2RGB"未被宣告的問題
今天使用OpenCV4的時候,發現報錯了,"CV_BGR2RGB"居然不能用。
原因是因為OpenCV4改用"COLOR_BGR2RGB"而不是"CV_BGR2RGB"了。
所以
只要把它改成"COLOR_BGR2RGB"後,就可以執行了。
標題: 用tkinter開視窗選擇要顯示的圖片及檔名。
意思就是,可以在tkinter中開選擇視窗選擇要開啟的圖片,然後顯示圖片和檔名出來。
===分隔線===
今天要來使用tkinter顯示圖片和圖片,直接進入正題吧!
首先,載入以下套件:
import cv2
import numpy as np
import tkinter as tk
from PIL import Image, ImageTk
from tkinter import StringVar, IntVar
from tkinter.filedialog import askopenfilename
然後設定一個tkinter視窗,標題為圖片顯示,大小為450*700。
window = tk.Tk()
window.title('圖片顯示')
window.geometry('450x700')
接著定義一個函數:
def OpenFile():
#這是圖片檔的路徑
filename = askopenfilename()
#用cv2載入圖片,我們不用imread,因為它不支援中文。
img = cv2.imdecode(np.fromfile(filename,dtype=np.uint8), cv2.IMREAD_COLOR)
#將cv2的BGR轉成RGB
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#重新調整圖片大小
img=cv2.resize(img,(450,280))
#將img載入為PIL的格式。
im = Image.fromarray(img)
#將img載入到ImageTK中
photo = ImageTk.PhotoImage(im)
#設定labelimg為圖片作顯示(下方會提到)
labelimg.configure(image=photo)
labelimg.image = photo
#設定text1為檔名作顯示(下方會提到)
#filename.split("/")[-1]的意思是,將路徑的/前方砍掉,只留下檔名。
text1.set(filename.split("/")[-1])
接著於函數下方(函數外面)設定tkinter的Button:
b2 = tk.Button(window, text='open', font=('Arial', 12), width=10, height=1, command=OpenFile)
b2.pack()
注意藍色處,意思就是按下去後執行剛剛的OpenFile函數。
設定剛才OpenFile函數中的text1,為顯示檔名的label。
text1 = StringVar()
label1 = tk.Label(window,textvariable=text1, text='1799', font=('Arial', 12), width=100, height=8)
label1.pack()
設定剛才OpenFile函數中的labelimg,它是顯示圖片用的。
labelimg = tk.Label(window, image="")
labelimg.pack()
設定視窗為無限循環(一直保持開啟的狀態直到使用者關閉視窗)
window.mainloop()
由上整理出完整的程式碼如下:
import cv2
import numpy as np
import tkinter as tk
from PIL import Image, ImageTk
from tkinter import StringVar, IntVar
from tkinter.filedialog import askopenfilename
window = tk.Tk()
window.title('圖片顯示')
window.geometry('450x700')
def OpenFile():
#這是圖片檔的路徑
filename = askopenfilename()
#用cv2載入圖片,我們不用imread,因為它不支援中文。
img = cv2.imdecode(np.fromfile(filename,dtype=np.uint8), cv2.IMREAD_COLOR)
#將cv2的BGR轉成RGB
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#重新調整圖片大小
img=cv2.resize(img,(450,280))
#將img載入為PIL的格式。
im = Image.fromarray(img)
#將img載入到ImageTK中
photo = ImageTk.PhotoImage(im)
#設定labelimg為圖片作顯示
labelimg.configure(image=photo)
labelimg.image = photo
#設定text1為檔名作顯示
#filename.split("/")[-1]的意思是,將路徑的/前方砍掉,只留下檔名。
text1.set(filename.split("/")[-1])
b2 = tk.Button(window, text='open', font=('Arial', 12), width=10, height=1, command=OpenFile)
b2.pack()
text1 = StringVar()
label1 = tk.Label(window,textvariable=text1, text='1799', font=('Arial', 12), width=100, height=8)
label1.pack()
labelimg = tk.Label(window, image="")
labelimg.pack()
window.mainloop()
現在來執行一次程式看看吧!
按下執行,可以看到一個視窗,有個按鈕。
我們選擇的當然是頁面上唯一的一張立華奏彈鋼琴圖啦~
如果覺得立華奏很讚,或這篇文有幫助到你們的話,請留言或幫忙按個廣告吧。
您的支持是我寫文的最大動力。
如果失敗了,也請留言讓我知道,看看哪個環節出了問題,我有看到就會回。
希望這篇文有幫助到各位ξ( ✿>◡❛)
標題:[範例]如何在QT中顯示OpenCV開啟的影像
本篇以Visual Studio 2019做範例。
首先,你的Visual Studio 2019要先安裝好QT和OpenCV。
可以參考以下兩篇文章:
確定安裝好之後,建立一份QT專案。
然後按專案/[專案名稱]屬性。 (我懶得重新截圖,所以用舊圖)
找到VC++目錄的地方。
在Include目錄之後加上 ;C:\opencv\build\include
在程式庫目錄之後加上 ;C:\opencv\build\x64\vc15\lib
注意,前後要用「;」區隔。
然後你去C:\opencv\build\x64\vc15\lib。
找到類似opencv_world451.lib的東西,把檔名複製起來。
如果你的專案是debug模式,就要複製檔名後面有個d的,就是opencv_world451d.lib。
如果你的專案是release模式,就要複製opencv_world451.lib。
然後回到剛剛的屬性頁。
標題:在Visual Studio 2019安裝OpenCV4
今天,我們要在Visual Studio 2019安裝OpenCV4,直接進入正題吧。
首先,去這個OpenCV官方網址安裝OpenCV:
看到我的文章標題就曉得,我們要選的版本當然是最新的4.5版本。
點選完紅色框框處後會載一個執行擋下來,我們點開它。
然後選擇安裝路徑。
如果說,C碟快滿了,不想塞進C碟,怎麼辦呢?
它才1.25GB而已,如果你的電腦連1.25GB的資料都塞不進C碟,建議重灌電腦,或換大一點的磁碟。
用好一點的設備,對你未來在OpenCV的開發上會比較好d(`・∀・)b
接著按Extract開始安裝。
裝完後你應該會在C碟找到一個opencv的資料夾。
從裡面複製一份類似 C:\opencv\build\x64\vc15\bin 的路徑。
注意:不是 C:\opencv\build\bin
然後開啟本機,按右鍵/內容。
選擇進階系統設定/進階/環境變數。 (如下圖)
然後找到一個叫Path的變數,選擇後按編輯/新增。
然後輸入剛剛複製的C:\opencv\build\x64\vc15\bin。
然後按確定,剩餘的視窗也是按確定。
然後我們從Visual Studio 2019新增一份C++的專案。(這部分應該不用多加贅述)
然後按專案/[專案名稱]屬性。 (我的範例專案名稱為cvtest)
找到VC++目錄的地方。
在Include目錄之後加上 ;C:\opencv\build\include
在程式庫目錄之後加上 ;C:\opencv\build\x64\vc15\lib
注意,前後要用「;」區隔。
然後你去C:\opencv\build\x64\vc15\lib。
找到類似opencv_world451.lib的東西,把檔名複製起來。
如果你的專案是debug模式,就要複製檔名後面有個d的,就是opencv_world451d.lib。
如果你的專案是release模式,就要複製opencv_world451.lib。
我很貼心的幫你們打好了,直接複製就行。
記得紅色的檔名處要改成你的圖片路徑。
#include<opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
int main()
{
Mat img = imread("C:/ckey/0.jpg", -1);
namedWindow("test", WINDOW_AUTOSIZE);
imshow("test", img);
waitKey(0);
destroyWindow("test");
return 0;
}
輸入完後按下執行。
就會看到我那張超讚的立華奏的圖被OpenCV開啟了。
如果覺得立華奏很讚,或這篇文有幫助到你們的話,請留言或幫忙按個廣告吧。
您的支持是我寫文的最大動力。
如果失敗了,也請留言讓我知道,看看哪個環節出了問題,我有看到就會回。
希望這篇文有幫助到各位ξ( ✿>◡❛)
標題:在cv2中實現BGR轉LAB 或
在python cv2中進行正確的BGR2LAB 或
在python cv2中取得LAB
其實正確版要做兩個步驟,第一項是
步驟一:
img2=cv2.cvtColor (img, cv2.COLOR_BGR2LAB)
但是,轉出來的並不是正確的LAB。
步驟二:
還要再將LAB的L進行:L=L*100/255
再將LAB的A進行:A=A-128
再將LAB的B進行:B=B-128
記得型態要改成.astype('float')而非原來的uint8
如此一來便得到正確的BGR2LAB了。