機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
樓主: awolfbee
打印 上一主題 下一主題

開始設(shè)計一種大蒜播種機

[復(fù)制鏈接]
151#
 樓主| 發(fā)表于 2021-2-2 22:32:31 | 只看該作者
6 ]% U2 c6 z: ~3 d$ ]/ x
剝掉蒜皮后的輪廓圖。最后一副圖樣有點奇怪,生成的輪廓曲線連貫且平滑,也就是重新生成了下然后就變成這樣了,不知道程序上有哪些變動。/ P% R5 [. Q6 m2 o+ @6 C9 n" L

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x

點評

這一次購買的大蒜品種有點奇怪,蒜瓣都是鼓肚子的,不像之前購買的那種,輪廓圖都是和月牙一樣?磥磉@個蒜的種類是很講究的,要注意了。  發(fā)表于 2021-2-2 22:37
肉眼能看得出哪邊是蒜尾,哪邊是蒜尖嗎?如果人眼都分辨不出來的話,機器估計也無能為力了。  發(fā)表于 2021-2-2 22:36
回復(fù) 支持 反對

使用道具 舉報

152#
 樓主| 發(fā)表于 2021-2-2 22:39:23 | 只看該作者
程序如下:
6 _; ^% X  H$ k9 k+ `% v; a3 G7 G: D$ X9 ^" W
操作系統(tǒng): win7 64位
: R! r/ h* Y) A( o- K$ dIDE:VC++2010旗艦版6 Q$ V  |. x& W1 m3 H! K4 h6 J  O
視覺軟件: OPENCV 3.0& f6 r- A7 r2 ?7 c7 b
' Q! X, @5 |, i6 K/ b7 n: u$ U

& m+ S, O& m7 W& A1 f0 W# [- n+ ~' E//#include "stdafx.h"4 z! u& h% Y! |. `
#include "core/core.hpp"5 c7 a% Z% {6 _
#include <opencv2/imgproc/imgproc.hpp>
5 C! r9 n& A$ g: v#include <opencv2/highgui/highgui.hpp>
% u# x, B! |2 t: Z! j#include <iostream>& L; m  G5 K# U% s2 r+ T
#include "highgui.h"- ]& R) r5 \% o+ \' j8 `
#include <set>$ }7 m8 U8 l. @& a/ |" `: c" R: P
#include <opencv2\opencv.hpp>
  _3 O& {! [1 K8 C3 S1 F" w8 |#include<vector>     //包含所需要的類文件vector,還有一定要加上using namespace std。
/ j9 o4 `$ t, e1 l1 @#include <stdio.h>! t1 B7 q) U+ f, x& T
#include <conio.h>2 l* C! |4 y: y$ R# _5 a
#include <opencv2/highgui/highgui_c.h>
3 ]6 n" J2 y' B  o! C5 B/ I#include <math.h>6 `' [! Z. q* D( e6 E0 F4 A
#include "iostream"
. H) c# M8 y6 n' Y% |#include "cv.h"
2 r# {2 L( @; Z9 R8 _9 P/ p( h" J#include "highgui.h"
+ a5 ~# ^. Q% M, n' Ausing namespace std;
! I- Q5 v; `* T* _6 ausing namespace cv;
7 n  L- S2 I- I' u1 D( `9 b: d- g, Z/ [: L# ]7 n: n7 q
# |: o$ A4 b$ G1 `* k' O/ r
; j3 C0 r+ M. _" q* C7 x7 ~6 T
//-----------------------------------【main( )函數(shù)】--------------------------------------------5 T0 u. h& P7 a# I; I2 ?$ M! V
//     描述:控制臺應(yīng)用程序的入口函數(shù),我們的程序從這里開始% r  `7 J2 G; ^- r) D8 A/ b
//-------------------------------------------------------------------------------------------------: f3 q- A1 E- [' F+ Y

" H  [8 l: U: a* i* [& j9 E( s; `int main()6 Z1 d3 S- f3 i( C, l  p% r/ V

% |: E6 h0 M4 D  n4 d" E; [{6 e* ?' I1 M! S
int chufa=1;
0 q( f1 z. l! x8 p6 M+ l    //【1】從攝像頭讀入視頻
& Q2 S9 T3 O) L. M7 d3 e! H5 l; l' y6 u
    VideoCapture capture(0);
1 C& o, f/ X. P
' w- `4 P- C' l/ y6 g: ~9 Q    Mat edges;   //定義類. N1 u5 g1 `5 i8 @6 H8 F

3 Q7 @  Z5 Y/ B3 w3 Z3 vnamedWindow("預(yù)處理后的視頻", 0);
; C8 e" s$ m9 D
+ ]: P3 _/ a0 ^/ l //   Mat frame;  //定義一個Mat變量,用于存儲每一幀的圖像,將該項至于循環(huán)之外,不要重復(fù)定義Mat,增快速度;# [' B% j, x" f0 f$ B

) Z$ Y0 Z9 E2 K1 Q" a& `6 M//定義輪廓和層次結(jié)構(gòu)(這個不是很理解)* h( d7 @- e& [) j1 e0 W

% D. T+ m1 k, Y; x, U$ T9 N//vector<vector<Point>>contours;  //其中contours 應(yīng)該是一個變量,可以用在后面的輪廓查找的函數(shù)中,定義點的向量
' u& j7 J9 l. b! y3 f: i8 Z2 N9 U0 ?- o8 _; e! b/ }
//vector<Vec4i>hierarchy;    //定義四維向量???; ]# z) {5 _4 _0 f

/ L% d0 O) u& F# j! t7 u' c//【2】循環(huán)顯示每一幀4 [+ ^3 l$ F  }4 q* ~4 D
9 e, ~7 M' y+ T: _8 s+ [2 `$ C
    while (1)
( T% K0 i2 I5 G2 _/ e+ r2 t
8 ]) O+ Y- M0 h/ z    {
/ W1 L8 s9 s+ J5 w/ B, W! z1 k' n3 x: e/ ]  l0 a4 S7 ^' k2 i
        //讀入圖像
+ O& Y, m4 b1 e, Z( t- f) F4 h9 L$ q4 s
           Mat frame;  //定義一個Mat變量,用于存儲每一幀的圖像,將該項至于循環(huán)之外,不要重復(fù)定義Mat,增快速度;6 h1 O9 \9 y) T6 L0 G
& S# m) E/ g" g5 p8 q1 U
           if (chufa=1) //當(dāng)取樣信號為1時,開始取當(dāng)前幀,然后進(jìn)行識別
3 C- }( O3 A: m- {
: V  T/ r1 f/ q9 l, T                        {: j& Z+ }2 A! A& D9 y" s
7 L) Q* O$ M! {; k1 ~6 l
                          capture >> frame;                                              //讀取當(dāng)前幀,videocapture函數(shù)是不斷讀取外界的視頻,需要一個類來讀取當(dāng)前幀,+ S+ L& @( G6 s0 H
                                                  chufa=0;
/ }% [+ E3 i9 [2 ~% P$ I; d# i9 }! A5 N: D/ S
                                                                                                  //對于只需要一副圖片來進(jìn)行檢測的操作來說,每個循環(huán)只要出發(fā)某個取樣信號,取樣一次就好了。因此用IF語句
* O  N' }$ R! D8 {0 l4 _+ ]" q+ Z2 F4 F8 s6 h3 S5 n9 g# S2 _8 h
                           cvtColor(frame, edges, CV_BGR2GRAY);      //灰度化  --如果說需要使用顏色檢測蒜瓣的底部和頭部,可能還需要顏色來判斷- c! ^* }. L4 E, b: r

2 F$ h' G* P( R7 d2 ]                          threshold(edges, edges, 120, 255, CV_THRESH_BINARY | CV_THRESH_OTSU);         //二值化,將其變成黑白兩色的圖樣0 p  E( D$ Z, }. L( O, e# i0 N
0 n; z& W- n& x
                          blur(edges, edges, Size(3, 3));                           //進(jìn)行模糊,使用3*3內(nèi)核來降噪
3 a1 ?1 V6 ]/ z% Q* y
( _0 G6 O" z% X3 w1 Y3 i, e2 u) \                         Canny(edges, edges, 0, 30, 3);                            //進(jìn)行canny邊緣檢測并顯示
  }' L6 z  H$ O( X, G5 D6 w
! Y9 p& C- A/ ]+ u- [& F0 C5 }                       // findContours (edges, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);           //要求原圖像為8位單通道圖像;其中edges是源文件,contours是輪廓函數(shù)??$ O2 c4 _( r, m3 T

6 ?/ S; j: w; S& M" B                                                                                                                                                                                      //CV_RETR_EXTERNAL,僅需要外側(cè)的輪廓用于識別,
6 \; r2 J; R4 |0 K1 y- H# ~5 N2 I% `. ~2 t/ V  B
                                                                                                                                                                                      //CV_CHAIN_APPROX_NONE,獲取每個輪廓的每個像素,最好是連續(xù)的,& g  h# I: X5 o8 h7 Z2 Q1 I- P
5 r! j! y4 V1 Y* [8 \- l2 E1 A
                       }( g  A$ g4 l9 \& e8 h

( H2 F6 }  e0 j9 X& N7 o, b        imshow("蒜瓣輪廓圖", edges);                        //顯示當(dāng)前幀. z! ]+ \! {% f- I
2 E( P+ {/ U8 \( M
        if (waitKey(30) >= 0)
7 R5 V( C, {% b5 u- a+ X0 i- O0 s* i
: q" `2 D  b/ P' @; \            break;
& p+ F1 ], B" h. `) c) i: p- S, p* v5 f

& Q& E& z- K! Q4 N5 J+ b) A3 x4 w
+ q0 y2 c+ z5 k& u# _0 D* h; |    }
6 K  P7 w. s- s( `0 S, f
( x1 F; U# P+ m) u. a$ d    return 0;( }6 C2 l- ]) U8 \  C" p2 A& u" I7 m9 J

& {0 a) M7 t: j& i0 T}
回復(fù) 支持 反對

使用道具 舉報

153#
 樓主| 發(fā)表于 2021-2-5 19:21:52 | 只看該作者
大白小白 發(fā)表于 2020-11-18 13:14
" @" z* x3 b3 n@awolfbee 蒜頭壓碎成蒜瓣,有視頻么?四處紛飛?能不能溫柔點?
3 v( q3 W- S; o; n& t  l4 O, }' y
https://item.taobao.com/item.htm?spm=a230r.1.14.30.2220dd82nuirRU&id=626297555950&ns=1&abbucket=2#detail
, R  v/ |# q: g& J) p* E. h4 M3 Y
這是大蒜分瓣機。' K( y9 c3 `+ M0 c/ M
回復(fù) 支持 反對

使用道具 舉報

154#
 樓主| 發(fā)表于 2021-2-5 19:24:34 | 只看該作者
大白小白 發(fā)表于 2020-11-22 21:23
! _; I! v- D1 \! N9 \' Q6 w9 |在圖片上注釋,沒看懂啥意思

6 y# B/ B, v% Y& l% e. U8 x! N& |( P2 T$ J; p) z% T
帶有塊狀的根部,大蒜剝好之后是沒有這個的。6 P2 O* j! D; k  y2 ^5 D1 i

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x

點評

這個根部如果剝離的話,在蒜瓣底部會形成一個火山口樣的形態(tài),如果能做激光三維,這倒是一個切入點,關(guān)鍵是激光三維傳感器太貴了。!一個十幾萬!。!加上他們給的程序就27萬!我想自己開發(fā)算了。  發(fā)表于 2021-2-5 22:55
回復(fù) 支持 反對

使用道具 舉報

155#
發(fā)表于 2021-2-5 19:29:10 | 只看該作者
awolfbee 發(fā)表于 2021-2-5 19:24
+ u8 I# c5 N9 p5 b帶有塊狀的根部,大蒜剝好之后是沒有這個的。
$ I& a7 b2 f4 N, S8 u  t
老大放假了?
" q4 H' O6 G) c. {, P/ f

點評

沒有,要到29才放假,放假也閑不著,孩子搶電腦看旺旺隊,唉……  發(fā)表于 2021-2-5 22:53
回復(fù) 支持 反對

使用道具 舉報

156#
 樓主| 發(fā)表于 2021-2-11 00:34:34 | 只看該作者
今天,哦不, 是昨天開始放假,上午上班的時候看了一個關(guān)于單攝像頭加線狀激光發(fā)射器旋轉(zhuǎn)配合OPENCV形成立體圖的文章,對激光三維照相有了一點了解。之所以考慮這樣的方式,是因為這幾天一直在思考如何從大蒜的側(cè)面的形狀判斷哪邊是頭或者尾,問題在于誤判率太高。所以還是回到檢測頭和尾的形狀特征上來。之前考慮的是接觸式的檢測方式,當(dāng)時有考慮用點陣壓力傳感器測量蒜頭和蒜尾的接觸壓力,如果壓力是環(huán)形,則是尾(實際上也不一定,因為有根的存在就會誤判),如果壓力為點狀,則為蒜尖。但是從耐久性來考慮,還是非接觸式的為好,這樣看來,非激光立體照相不可了。
回復(fù) 支持 反對

使用道具 舉報

157#
 樓主| 發(fā)表于 2021-2-16 23:18:15 | 只看該作者
http://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_1.html
1 x: y+ w" |/ i8 x8 D& Z* w" w" m' j' M: }/ N' Q
這是一個激光三維成像的帖子,在其中得到不少啟發(fā)。
9 O4 E7 U! r5 B- e6 z, ]& F) z/ j1 P4 N) O0 {% P" ?" w
如果能對蒜瓣的頭尾進(jìn)行三維掃描,獲得立體的圖像,則可以對圖像進(jìn)行分析,確定頭尾,這比用基恩士的要劃算多了,而且這個掃描面積很小,估計就是10*10個mm。
回復(fù) 支持 反對

使用道具 舉報

158#
 樓主| 發(fā)表于 2021-2-16 23:19:31 | 只看該作者
利用廢舊光驅(qū)上的鏡頭,在之前的攝像頭上增加一個透鏡,調(diào)節(jié)焦距,形成一個小的電子顯微鏡,這是大蒜的底部照片。, {0 U! ?: F" k, l, W1 i+ Y0 X
" ?7 h8 N# ?/ k+ t

3 Y/ c4 y' x, Z, [+ {9 E8 P6 S; N這個嘛,猜猜?
! }$ f& ~* H$ \. h* O

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊會員

x
回復(fù) 支持 反對

使用道具 舉報

159#
 樓主| 發(fā)表于 2021-2-16 23:22:53 | 只看該作者
老年手機的鍵盤,B-189,保密手機。
" N% h- m2 j. T! V, e, \" D1 Z, C2 M; z- b- i" f; W8 m! W# R0 X' s
可以非常清晰地看到手指的指紋。
回復(fù) 支持 反對

使用道具 舉報

160#
發(fā)表于 2021-2-18 16:21:16 | 只看該作者
@awolfbee 試試另一個思路,做光的反射和散射對比,從而判斷首尾。' _) d+ U8 [0 u( ]+ {

點評

謝謝,可以試試看。  發(fā)表于 2021-2-18 18:32

評分

參與人數(shù) 1威望 +1 收起 理由
大白小白 + 1 新年好!

查看全部評分

回復(fù) 支持 反對

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

小黑屋|手機版|Archiver|機械社區(qū) ( 京ICP備10217105號-1,京ICP證050210號,浙公網(wǎng)安備33038202004372號 )

GMT+8, 2024-11-1 12:41 , Processed in 0.058827 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表